import { getBookTypes } from "@/services/BooksService";
export default {
  namespaced: true, //打开命名空间，主要是方便mapState使用
  state: {
    data: [],
    isLoading: false,
  },
  //mutations变异 里面是vuex官方推荐的唯一可以改变仓库数据的地方
  //可以在里面写任意的函数，函数里面可以有两个参数
  //第一个参数就表示当前命名空间下的仓库对象 state
  //第二个参数 payload负荷，其实就是传递过来的要修改的值
  mutations: {
    setData(state, payload) {
      state.data = payload;
    },
    setIsLoading(state, payload) {
      state.isLoading = payload;
    },
  },
  // 处理副作用
  //context上下文 相当于store对象
  // 注意在action中还是不能修改store中的值
  // 值唯一改变的方式只能通过mutations方法
  // 外部通过dispatch调用fetchData
  actions: {
    async fetchData(context) {
      context.commit("setIsLoading", true);
      let resp = await getBookTypes();
      context.commit("setData", resp);
      context.commit("setIsLoading", false);
    },
  },
};
